package com.t.bricks.bussiness.service.customeraccount;

import java.math.BigDecimal;

import com.t.bricks.bussiness.service.common.BaseService;
import com.t.bricks.model.MsgEmity;

/**
 * 顾客账户CustomerAccount表基本业务操作类接口定义
 * 继承BaseService可直接实现通用方法
 * @author HuangXinBian
 * @DateTime 2022年06月22日 15:25:26
 * @param <T> 实体类
 */
public interface CustomerAccountService<T> extends BaseService<T> {
	
	/**
	 * 修改密码
	 * @param sId
	 * @param sOldPass
	 * @param sNewPass
	 * @return
	 */
	MsgEmity editPass(String sId, String sOldPass, String sNewPass);
	
	/**
	 * 重置密码
	 * @param sId 被修改的用户编号
	 * @param sPass 操作人员的密码
	 * @return
	 */
	MsgEmity resetPass(String sId, String sPass);
	
	/**
	 * 修改手势密码
	 * @param sId
	 * @param sOldPass
	 * @param sNewPass
	 * @return
	 */
	MsgEmity editSignPass(String sId, String sOldPass, String sNewPass);
	
	/**
	 * 重置手势密码
	 * @param sId 被修改的用户编号
	 * @param sPass 操作人员的密码
	 * @return
	 */
	MsgEmity resetSignPass(String sId, String sPass);

	/**
	 * 验证当前账号密码
	 * @param sId 账号
	 * @param sPass 待验证手势密码
	 * @return
	 */
	MsgEmity checkPass(String sId, String sPass);

	/**
	 * 验证当前账号手势密码
	 * @param sId 账号
	 * @param sPass 待验证手势密码
	 * @return
	 */
	MsgEmity checkSignPass(String sId, String sPass);
	
	/**
	 * 减少顾客账户中的余额
	 * @param sId
	 * @param subMoney
	 * @return
	 */
	MsgEmity subFund(String sId, BigDecimal subMoney);
	
	/**
	 * 增加顾客账户中的余额
	 * @param sId
	 * @param incMoney
	 * @return
	 */
	MsgEmity incFund(String sId, BigDecimal incMoney);
	
	/**
	 * 减少顾客账户中的积分
	 * @param sId
	 * @param subTally
	 * @return
	 */
	MsgEmity subTally(String sId, Integer subTally);
	
	/**
	 * 增加顾客账户中的积分
	 * @param sId
	 * @param incTally
	 * @return
	 */
	MsgEmity incTally(String sId, Integer incTally);
	
	/**
	 * 忘记支付密码
	 * @param sNo 识别号(电话)
	 * @param iCode 短信验证码
	 * @param sNewPass 新密码
	 * @return
	 */
	MsgEmity forgetPayPass(String sNo, Integer iCode, String sNewPass);
	
	/**
	 * 忘记支付手势密码
	 * @param sNo 识别号(电话)
	 * @param iCode 短信验证码
	 * @param sNewPass 新密码
	 * @return
	 */
	MsgEmity forgetPaySignPass(String sNo, Integer iCode, String sNewPass);
	
	/**
	 * 清除指定顾客账户中的积分
	 * @param sId 用户编号
	 * @return
	 */
	MsgEmity clearTally(String sId);
	
}
